package movilmax.sia_corp.action;

import java.util.LinkedList;
import java.util.Map;


import movilmax.sia_corp.model.Actividad;
import movilmax.sia_corp.model.Usuario;
import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ReporteActividades extends ActionSupport{
	
	private static final long serialVersionUID = -5413823982861910494L;
	
	private LinkedList<Actividad> rpt_lista;
	private String fechai;
	private String fechaf;
	private String tipoContrato;
	private String departamento;
	private String operador;
	private String tipoActividad;
	private String detalleTiposActividad;
	private String cliente;	
	
	@SuppressWarnings("rawtypes")
	public String consultarActividades(){
		rpt_lista=new LinkedList<Actividad>();
		boolean x=false;
		Resultado RCS= new Resultado();
		String SQL="",c1="",c2="",c3="",c4="",c5="",c6="",c7="";
		Fecha F = new Fecha();
		Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		Conectar BASE=new Conectar();
		if(!BASE.getMsg().equals("SI")){
			this.addActionError("No hay conexion al servidor");
			return ERROR;
		}
		
		/*------------------------------------------------------------FILTROS------------------------------------------------------------*/
		//intervalos de fecha
		if(this.getFechai() !=null && this.getFechaf() !=null){
			if (!this.getFechai().equals("") && !this.getFechaf().equals("") ){
				c1=" and A.fecha BETWEEN '" + this.fechai + "' and  '" + this.getFechaf() + "' ";
			}
		}
		//tipo de contrato
		if(!this.getTipoContrato().equals("-1") ){
			c2=" and C.tipo='" + this.getTipoContrato() + "' ";
    	}
		//area responsable(departamento)
		if(!this.getDepartamento().equals("-1") ){
    		c3=" and U.departamento='" + this.getDepartamento() + "' " ;
    	}
		//operador(usuario)
		if(!this.getOperador().equals("-1")){
			c4="and U.usuario='" + this.getOperador() + "'";
		}
		//tipo de actividad
		if(!this.getTipoActividad().equals("-1")){
			c5=" and A.tipo='" + this.getTipoActividad() + "'";
			
		}
		//detalle tipo actividad
		if(!this.getDetalleTiposActividad().equals("-1")){
			c6=" and A.tipo_det='" + this.getDetalleTiposActividad() + "' ";
		}
		//cliente
		if(!this.getCliente().equals("") ){
			c7= " and Z.nombres like '%" + this.getCliente() + "%' ";
    	}
		
		/*-------------------------------------------------------------------------------------------------------------------------------*/
		SQL="select A.codigo,Z.nombres+' '+Z.apellidos as clientex,Z.identificacion,C.tipo,C.contrato,A.codigo,A.fecha,A.hora,A.obs_cliente,A.obs_operador, " +
            " T.descripcion as actividad,X.descripcion as motivo, " +
            " U.descripcion as des_usuario,D.descripcion as area  " +
            " from clientes Z,contratos C,actividades A,tipos_actividad T,tipos_actividad_det X,usuarios U,departamentos D " +
            " where Z.codigo=C.cliente and C.contrato=A.contrato and A.tipo=T.cod and A.tipo_det=X.cod " +
            " and A.usuario=U.usuario and U.departamento=D.cod " + c1 + c2 + c3 + c4 + c5 + c6 + c7 +
            " Order by A.codigo DESC ";
		
		RCS= BASE.getBaseDatos().consultar(SQL);
		if(RCS.RP){
			do{
				Actividad ITM =new Actividad();
				ITM.setCod(RCS.getCadena("codigo"));
				ITM.setFecha(F.formateaFecha(RCS.getCadena("fecha"), false));
				ITM.setHora(RCS.getCadena("hora"));
				ITM.setTipoContrato(RCS.getCadena("tipo"));
				ITM.setContrato(RCS.getCadena("contrato"));
				ITM.setIdentificacion(RCS.getCadena("identificacion"));
				ITM.setCliente(RCS.getCadena("clientex"));
				ITM.setDes_actividad(RCS.getCadena("actividad"));
				ITM.setMotivo(RCS.getCadena("motivo"));
				ITM.setArea(RCS.getCadena("area"));
				ITM.setObsCliente(RCS.getCadena("obs_cliente"));
				ITM.setObsOperador(RCS.getCadena("obs_operador"));
				
				x=(x ? false: true);
				  if(x)
					  ITM.setStylo("tabla_fil_normal1");
				  else
					  ITM.setStylo("tabla_fil_normal2"); 
				
				rpt_lista.add(ITM);
			}while(RCS.sigItem());
			
		}
		BASE.getBaseDatos().cerrarConexion();
		return SUCCESS;
	}
	
	
	
	
	public String consultarDetallesActividad(){
		Map<?, ?> session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		Conectar BASE=new Conectar();
		if(!BASE.getMsg().equals("SI")){
			this.addActionError("No hay conexion al servidor");
			return ERROR;
		}
		
		BASE.getBaseDatos().cerrarConexion();
		return SUCCESS;
	}
	
	/*---------------------------------------------GETTERS AND SETTERS---------------------------------------------------*/
	
	public LinkedList<Actividad> getRpt_lista() {
		return rpt_lista;
	}

	public void setRpt_lista(LinkedList<Actividad> rpt_lista) {
		this.rpt_lista = rpt_lista;
	}

	public String getFechai() {
		return fechai;
	}

	public void setFechai(String fechai) {
		this.fechai = fechai;
	}

	public String getFechaf() {
		return fechaf;
	}

	public void setFechaf(String fechaf) {
		this.fechaf = fechaf;
	}

	public String getTipoContrato() {
		return tipoContrato;
	}

	public void setTipoContrato(String tipoContrato) {
		this.tipoContrato = tipoContrato;
	}

	public String getDepartamento() {
		return departamento;
	}

	public void setDepartamento(String departamento) {
		this.departamento = departamento;
	}

	public String getOperador() {
		return operador;
	}

	public void setOperador(String operador) {
		this.operador = operador;
	}

	public String getTipoActividad() {
		return tipoActividad;
	}

	public void setTipoActividad(String tipoActividad) {
		this.tipoActividad = tipoActividad;
	}

	public String getDetalleTiposActividad() {
		return detalleTiposActividad;
	}

	public void setDetalleTiposActividad(String detalleTiposActividad) {
		this.detalleTiposActividad = detalleTiposActividad;
	}

	public String getCliente() {
		return cliente;
	}

	public void setCliente(String cliente) {
		this.cliente = cliente;
	}

}
